home *** CD-ROM | disk | FTP | other *** search
- PROGRAM Pic_Asc;
- { CONVERTS PC-DEMO PICTURES TO ASCII FILES }
-
- CONST
- Blank = 32; { ASCII OF SPACE CHARACTER}
- Columns40 = 40; { COLUMNS FROM 1 TO 40 }
- Columns80 = 80; { COLUMNS FROM 1 TO 80 }
- LastLine = 25; { LINES 1 TO 25 }
- MaxtString = 76; { MAX CHARS IN FILE NAME W/ PATH AND EXT }
- FourKB = 4000; { FILE SIZE OF 80-COLUMN PICTURE }
- TwoKB = 2000; { FILE SIZE OF 40-COLUMN PICTURE }
- ASCIIExt = '.ASC'; { FILE EXTENSION FOR ASCII FILES }
- PictureExt = '.PIC'; { FILE EXTENSION FOR FULL PICTURES }
- Null = ''; { NULL STRING }
-
- TYPE
- N_PictureType = ARRAY [1..LastLine, 1..Columns40] OF Integer;
- { ARRAY OF 40-COLUMN PICTURE DATA }
- W_PictureType = ARRAY [1..LastLine, 1..Columns80] OF Integer;
- { ARRAY OF 80-COLUMN PICTURE DATA }
-
- ParString = String [255];
- { VARIABLE LENGTH STRING PARAMETER TYPE }
-
- VAR
- I,
- LastChar,
- LastColumn,
- X,
- Y : Byte;
-
- Size : Integer;
-
- IName,
- OName : ParString;
-
- CurLine : ARRAY [1..80] OF Char;
-
- W_Picture : W_PictureType;
- { THE 80-COLUMN PICTURE }
-
- N_Picture : N_PictureType Absolute W_Picture;
- { THE 40-COLUMN PICTURE }
-
- OutData : Byte;
-
- N_InFile : FILE OF N_PictureType;
- W_InFile : FILE OF W_PictureType;
-
- OutFile : Text;
-
- TestFile : FILE OF Byte;
-
-
- FUNCTION Exist (FileName : ParString) : Boolean;
- { SEES IF A FILE EXISTS }
-
- VAR
- TestFile : FILE;
-
- BEGIN { Exist }
- Assign (TestFile, FileName);
-
- {$I-}
-
- Reset (TestFile);
-
- {$I+}
-
- Exist := (IOResult = 0);
- Close (TestFile);
- END; { Exist }
-
-
-
- PROCEDURE ConvertCase (VAR Strng : ParString);
- { CONVERTS STRINGS TO UPPER CASE }
-
- VAR
- I : Byte;
-
- BEGIN { ConvertCase }
- FOR I := 1 TO Length (Strng) DO
- Strng [I] := UpCase (Strng [I]);
- END; { ConvertCase }
-
-
- BEGIN { Pic_Asc }
- IName := Null;
- IF ParamCount = 0
- THEN
- BEGIN
- Writeln ('Command must be of form: PIC_ASC <name>');
- Exit;
- END;
- IName := ParamStr (1);
- Convertcase (IName);
- OName := IName + ASCIIExt;
- IName := IName + PictureExt;
- IF NOT Exist (IName)
- THEN
- BEGIN
- Writeln ('ERROR! File not found ' + IName);
- Exit;
- END;
- Assign (TestFile, IName);
- Reset (TestFile);
- Size := FileSize (TestFile);
- Close (TestFile);
- IF NOT ((Size = TwoKB) OR (Size = FourKB))
- THEN
- BEGIN
- Writeln ('ERROR! File wrong size.');
- Exit;
- END;
- IF Size = TwoKB
- THEN
- BEGIN
- LastColumn := Columns40;
- Assign (N_InFile, IName);
- Reset (N_InFile);
- Read (N_InFile, N_Picture);
- Assign (OutFile, OName);
- Rewrite (OutFile);
- FOR Y := 1 TO LastLine DO
- BEGIN
- LastChar := LastColumn + 1;
- REPEAT
- LastChar := LastChar - 1;
- UNTIL (Lo (N_Picture [Y, LastChar]) <> Blank) OR
- (LastChar = 0);
- FOR X := 1 TO LastChar DO
- Write (OutFile, Chr (Lo (N_Picture [Y, X])));
- Writeln (OutFile);
- END;
- Close (N_InFile);
- Close (OutFile);
- END
- ELSE
- BEGIN
- LastColumn := Columns80;
- Assign (W_InFile, IName);
- Reset (W_InFile);
- Read (W_InFile, W_Picture);
- Assign (OutFile, OName);
- Rewrite (OutFile);
- FOR Y := 1 TO LastLine DO
- BEGIN
- LastChar := LastColumn + 1;
- REPEAT
- LastChar := LastChar - 1;
- UNTIL (Lo (W_Picture [Y, LastChar]) <> Blank) OR
- (LastChar = 0);
- FOR X := 1 TO LastChar DO
- Write (OutFile, Chr (Lo (W_Picture [Y, X])));
- Writeln (OutFile);
- END;
- Close (W_InFile);
- Close (OutFile);
- END;
- Writeln ('File ' + OName + ' created');
- END. { Pic_Asc }